package leetCode.secondWeek;

import java.util.LinkedList;
import java.util.List;

public class Code_24 {
  public ListNode swapPairs(ListNode head) {
    ListNode res = head;
    List<Integer> tmpRes = new LinkedList<>();
    ListNode result = new ListNode(0);
    ListNode resFinal = result;

    while (res != null && res.next != null) {
      ListNode firstToNext = new ListNode(res.val);
      ListNode nextToFirst = res.next;
      res = nextToFirst;
      firstToNext.next = nextToFirst.next;
      nextToFirst.next = firstToNext;
      tmpRes.add(res.val);
      tmpRes.add(res.next.val);
      res = res.next.next;
    }

    if (res != null) {
      tmpRes.add(res.val);
    }

    for (int i = 0; i < tmpRes.size(); i++) {
      result.next = new ListNode(tmpRes.get(i));
      result = result.next;
    }

    return resFinal.next;
  }
}
